// 冒泡排序
let arr = [10,9,5,2,3,1,2]
// 设置标志，减少执行的次数
// let flag = false
// let n=0
// // 1.双层的for循环+解构换位
// for (let j = 0; j < arr.length; j++){
//   flag=false
//   for (let i = arr.length - 1; i > j; i--){
//     if (arr[i] > arr[i - 1]) {
//       ;[arr[i - 1], arr[i]] = [arr[i], arr[i - 1]]
//       flag=true
//     }
//     n++
//   }
//   if (!flag) {
//     break
//   }
// }


// 选择性排序 变成了升序，此算法是最差的
// 将无序数组中最小的放置到有序末尾，直到剩下最后一位
// let position=0
// for (let j = 0; j < arr.length; j++){
//   let minData = arr[j]
//   for (let i = j; i < arr.length-1; i++){
//     if (minData>arr[i+1]) {
//       minData = arr[i + 1]
//       position= i + 1
//     }
//     continue
//   }
//   let re= arr.splice(position, 1)
//   arr.splice(j,0,...re)
// }

// console.log(arr)

// 插入排序 将无序数组中的值 与有序数组进行比较，插入到首个比它小的有序数组前面

// 无序数组
for (let i = 1; i < arr.length; i++){
  // 有序数组
  for (let j = 0; j < i; j++) {
    const item = arr[j];
    if (item > arr[i]) {
      let re = arr.splice(i, 1)
      arr.splice(j,0,...re)
    }
  }
}

console.log(arr)

